<template>
	<!-- #ifdef MP-WEIXIN -->
	<!-- 微信小程序环境下不显示 uni-app 的 tabbar 组件，使用原生自定义 tabbar -->
	<view></view>
	<!-- #endif -->
	
	<!-- #ifndef MP-WEIXIN -->
	<!-- 非微信小程序环境使用 uni-app 的 tabbar 组件 -->
	<view class="custom-tab-bar">
		<zdy-tabbar ref="tabbarComponent" :currentTab="currentTab" @change="onTabChange"></zdy-tabbar>
	</view>
	<!-- #endif -->
</template>

<script>
	import zdyTabbar from '@/components/zdy-tabbar/zdy-tabbar.vue'
	
	export default {
		components: {
			zdyTabbar
		},
		data() {
			return {
				currentTab: 0
			}
		},
		created() {
			this.getCurrentTab();
			// 监听购物车数量变化 - 使用uni.$on替代this.$fire.on
			try {
				uni.$on('updateCartCount', this.updateCartCount);
			} catch (e) {
				console.log('监听购物车更新事件失败', e);
			}
		},
		mounted() {
			// 在小程序中，确保组件挂载后再次获取当前tab
			// #ifdef MP-WEIXIN
			this.$nextTick(() => {
				this.getCurrentTab();
				// 确保子组件正确初始化
				if (this.$refs.tabbarComponent) {
					this.$refs.tabbarComponent.getCartCount();
				}
			});
			// #endif
			
			// #ifdef H5 || APP-PLUS
			// 监听页面切换事件
			uni.$on('onTabChanged', this.handleTabChange);
			// #endif
		},
		beforeDestroy() {
			// 移除事件监听 - 使用uni.$off替代this.$fire.off
			try {
				uni.$off('updateCartCount', this.updateCartCount);
				// #ifdef H5 || APP-PLUS
				uni.$off('onTabChanged', this.handleTabChange);
				// #endif
			} catch (e) {
				console.log('移除购物车更新事件监听失败', e);
			}
		},
		methods: {
			// 获取当前页面索引
			getCurrentTab() {
				// #ifndef MP-WEIXIN
				const pages = getCurrentPages();
				const currentPage = pages[pages.length - 1];
				const route = currentPage.route;
				
				const tabList = [
					'pages/index/index',
					'pages/category/category',
					'pages/cart/cart',
					'pages/user/user'
				];
				
				this.currentTab = tabList.findIndex(item => item === route);
				// #endif
			},
			// tab切换事件
			onTabChange(index) {
				// #ifndef MP-WEIXIN
				this.currentTab = index;
				// #endif
			},
			// 处理tab切换事件（用于H5和APP）
			handleTabChange(index) {
				// #ifndef MP-WEIXIN
				this.currentTab = index;
				// #endif
			},
			// 更新购物车数量
			updateCartCount() {
				// #ifndef MP-WEIXIN
				// 触发子组件更新购物车数量
				this.$nextTick(() => {
					// 使用refs替代$children，提高小程序兼容性
					if (this.$refs.tabbarComponent) {
						this.$refs.tabbarComponent.getCartCount();
					}
				});
				// #endif
				
				// #ifdef MP-WEIXIN
				// 微信小程序环境下，触发原生自定义 tabbar 更新
				try {
					const tabbar = this.$scope.getTabBar();
					if (tabbar) {
						tabbar.setData({
							selected: 0
						});
						tabbar.getCartCount && tabbar.getCartCount();
					}
				} catch (e) {
					console.log('更新小程序 tabbar 失败', e);
				}
				// #endif
			}
		}
	}
</script>

<style lang="scss" scoped>
	.custom-tab-bar {
		position: fixed;
		bottom: 0;
		left: 0;
		right: 0;
		z-index: 999;
	}
</style>